package com.hsj.xiaokang.comparableandcomparator;

import java.util.Arrays;
import java.util.Comparator;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 2.
 * Comparator是比较接口，我们如果需要控制某个类的次序，而该类本身不支持排序(即没有实现Comparable接口)，那么我们就可以建立一个“该类的比较器”来进行排序，这个“比较器”只需要实现Comparator接口即可。
 * 也就是说，我们可以通过实现Comparator来新建一个比较器，然后通过这个比较器对类进行排序。
 * @Description:TODO
 * @author:hsj qq:2356899074
 * @time:2017年11月8日 上午11:36:37
 */
public class Test_2 {
	
	private final static Logger LOGGER = LoggerFactory.getLogger(Test_2.class);
	
	 public static void main(String[] args)
	    {
	        Person[] people=new Person[]{new Person("xujian", 20),new Person("xiewei", 10)};
	        LOGGER.info("排序前");
	        for (Person person : people)
	        {
	        	LOGGER.info(person.toString());
	        }
	        
	        /*Arrays.sort(people,new Comparator<Person>(){

				@Override
				public int compare(Person o1, Person o2) {
					return o1.getAge()-o2.getAge();
				}
	        	
	        });*/
	        //jdk8新特性 lambda函数
	        Arrays.sort(people,(o1,o2) -> {return o1.getAge()-o2.getAge();});
	        
	        LOGGER.info("\n排序后");
	        for (Person person : people)
	        {
	         	LOGGER.info(person.toString());
	        }
	    }
	 
	public static class Person
	{
	    String name;
	    int age;
	    public Person(String name, int age)
	    {
	        super();
	        this.name = name;
	        this.age = age;
	    }
	    public String getName()
	    {
	        return name;
	    }
	    public int getAge()
	    {
	        return age;
	    }
		@Override
		public String toString() {
			return "Person [name=" + name + ", age=" + age + "]";
		}
	    
	   
	}
}
